package cn.saltice.idempotence.idem.store;

import cn.saltice.idempotence.idem.enums.IdempotentStorageTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Optional;

/**
 * @program: idempotence
 * @description: 存储类型工厂类
 * @author: Mr.Liu
 * @create: 2020-10-04 22:59
 **/
@Component
public class IdempotentStorageFactory {
    @Autowired
    private List<IdempotentStorage> idempotentStorageList;

    public IdempotentStorage getIdempotentStorage(IdempotentStorageTypeEnum storageType){
        Optional<IdempotentStorage> idempotentStorage = idempotentStorageList.stream().filter(v->v.type() == storageType).findAny();
        return idempotentStorage.orElseThrow(NullPointerException::new);
    }
}
